<?php

class PageParser extends ContainerParser
{
	/*
	Recorre un archivo .xml (o .html, o como decida llamarlo) para identificar sus elementos clave y poder construir la clase compilada
	Tiene que
	 - Determinar si tiene la extensión correcta
	 - Localizar su codebehind (puede no estar, pero entonces es bastante trivial todo el asunto)
	 - Procesar el asunto de las masterpages, del que aún no tengo ni pajolera idea
	 - encontrar todos los runat="server"
	 - establecer cuáles están dentro de otros
	 - crear un parser para cada uno (controlParser, HtmlControlParser, ...)
	 - construir la clase
	 */
	 public static $allowed_extensions = array("html", "htm", "aspx", "page");
	 
	//Extensiones permitidas para archivos de marcado
	protected function getAllowedExtensions()
	{
		return PageParser::$allowed_extensions;
	}
	 
	 
	/*
	Esto es un poco absurdo porque, si llega aquí, es que alguien ya ha decidido que es un page
	*/
	protected function parseContainerDeclaration($str)
	{
		//sacar el primer palabro
		$rex2 = "/\\b\\w+?\\b/";
		preg_match($rex2, $str, $firstWord);
		if($firstWord[0]!="Page")
		{
			throw new Exception("Expecting page declaration, found '".$firstWord[0]."'\n");
		}
		else
		{
			$cnt = preg_match("/\\bCodefile=\"(\\w+?)\"/i", $str, $match);
			if($cnt>0)
				$this->code_file = $match[1];
				
			$cnt = preg_match("/\\ClassName=\"(\\w+?)\"/i", $str, $match);
			if($cnt>0)
				$this->class_name = $match[1];
		}
	}
	
	
 	
 	public function getInitCode($rootParser)
 	{
 		//esto no pasará nunca
 		// ¿o tal vez sí -con las masterpages? - NO CREO
 	}
 	
	
}





